package com.urbanflow.vinci.controler;

import java.sql.Time;
import java.sql.Timestamp;
import java.util.ArrayList;
import java.util.Calendar;
import java.util.Date;
import java.util.GregorianCalendar;
import java.util.HashMap;
import java.util.List;
import java.util.Map;

import com.urbanflow.vinci.main.Arret;
import com.urbanflow.vinci.main.EnumJour;
import com.urbanflow.vinci.main.Horaire;
import com.urbanflow.vinci.main.HoraireModele;
import com.urbanflow.vinci.main.Ligne;
import com.urbanflow.vinci.parcourt.Graphe;

public class HoraireManager {
	private static HoraireManager instance = new HoraireManager();
	private Map<String,HoraireModele> mesHoraires = new HashMap<String,HoraireModele>();
	public static HoraireManager getInstance(){
		return instance;
	}
	
	public Horaire retournerHoraire(Ligne maLigne, Arret noeudDepart, Arret noeudArrive, Date maDateArrive) {
		List<Horaire> maListe = noeudDepart.getHoraires(maDateArrive, maLigne);
		Horaire result = null;
		for(Horaire unHoraire: maListe) {
			if(unHoraire.getDate().after(maDateArrive) && (result == null || result.getDate().after(unHoraire.getDate()))) {
				result = unHoraire;
			}
		}
		result.setArretDeservi(noeudArrive);
	//	System.out.println("Result ==>"+result.getDate().toString());
		return result;
//		List<HoraireModele> horaireModeles = monArret.getMesHorairesModeles();
//		List<String> test = new ArrayList<String>();
//		Calendar calendar = new GregorianCalendar();
//		calendar.setTime(maDateArrive);
//		Integer day = calendar.get(Calendar.DAY_OF_WEEK);
////		Date date = calendar.getTime();
//		HoraireModele result = new HoraireModele();
//		for(HoraireModele horaireModele : horaireModeles){
//			if(horaireModele.getLigne().equals(maLigne)){
//				if(horaireModele.getJour().equals(EnumJour.getInstance().convertNombreEnJour(day))){
//					System.out.println(horaireModele.getHoraire().toString());
//					Date hm = horaireModele.getHoraire();
//					if(hm.getTime() > maDateArrive.getTime() && (result == null || result.getHoraire() == null || result.getHoraire().after(hm))){
//						result = horaireModele;
//					}
//				}
//			}
//		}
//		Horaire horaire = new Horaire();
//		horaire.setArretDeservi(monArret);
//		horaire.setLigne(maLigne);
//		horaire.setDate(result.getHoraire());
//		System.out.println("RESULT ==> "+horaire.getDate().getTime());
//		return horaire;
	}
	public Map<String,HoraireModele> getMesHoraires() {
		return mesHoraires;
	}
	public void setMesHoraires(Map<String,HoraireModele> mesHoraires) {
		this.mesHoraires = mesHoraires;
	}
	
	
	

}
